import javax.swing.JFrame;
import javax.swing.*;
import java.awt.Container;

public class PhysicsLab {
   public static void main(String[] args) {
      PhysicsLabFrame labFrame = new PhysicsLabFrame();
      labFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      labFrame.setVisible(true);
   }
}

class PhysicsLabFrame extends JFrame {
   public PhysicsLabFrame() {
      setTitle("Small Physics Laboratory");
      setSize(MyWorld.WIDTH, MyWorld.HEIGHT+50);
      MyWorld world = new MyWorld();
      PhysicsLabPanel labPanel = new PhysicsLabPanel(world);
      add(labPanel);  // it is equivalent to getContentPane().add(...);
      world.setPanel(labPanel);   // to repaint view when model changes
      ConfigurationMenuListener cListener = new ConfigurationMenuListener(world);
      WorldControlMenuListener wcListener = new WorldControlMenuListener(world);
      setJMenuBar(createLabMenuBar(cListener, wcListener));
   }

   public JMenuBar createLabMenuBar(ConfigurationMenuListener cl, WorldControlMenuListener wl) {
      JMenuBar mb = new JMenuBar();
      
      JMenu menu = new JMenu ("Configuration");
      mb.add(menu);
      JMenu subMenu = new JMenu("Insert");  
      menu.add(subMenu);
      
      JMenuItem menuItem = new JMenuItem("Ball");
      menuItem.addActionListener(cl);
      subMenu.add(menuItem);
      menuItem = new JMenuItem("Fixed Hook");
      menuItem.addActionListener(cl);
      subMenu.add(menuItem);
      menuItem = new JMenuItem("Spring");
      menuItem.addActionListener(cl);
      subMenu.add(menuItem);
      menuItem = new JMenuItem("Rubber Band");
      menuItem.addActionListener(cl);
      subMenu.add(menuItem);
      
      JMenuItem menuItem2 = new JMenuItem("Delete");  // item del menu para borrar el elemento.
      menuItem2.addActionListener(wl);
      menu.add(menuItem2);
      
      menu = new JMenu("MyWorld");
      mb.add(menu);
      menuItem = new JMenuItem("Start");
      menuItem.addActionListener(wl);
      menu.add(menuItem);
      menuItem = new JMenuItem("Stop");
      menuItem.addActionListener(wl);
      menu.add(menuItem);

      menuItem = new JMenuItem("Resume"); // agregado
      menuItem.addActionListener(wl); // agregado
      menu.add(menuItem);  // agregado

      menuItem = new JMenuItem("Gravity");
      menuItem.addActionListener(wl);
      menu.add(menuItem);
      menuItem = new JMenuItem("Viscosity");
      menuItem.addActionListener(wl);
      menu.add(menuItem);
      subMenu = new JMenu("Simulator");
      menu.add(subMenu);
      menuItem = new JMenuItem("Delta time");
      menuItem.addActionListener(wl);
      subMenu.add(menuItem);
      menuItem = new JMenuItem("Graphics Refresh time");
      menuItem.addActionListener(wl);
      subMenu.add(menuItem);
      return mb;          
   }   
}
